package com.useage.day06;

import java.util.Date;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Component
@Aspect    // 说明当前对象是1个切面程序，此注解必须和 组件 定义配合使用
public class TimeCounter {

	
	// 切入前
	@Before(value="execution(* com.useage.day06.*.*(..))")
	public void ttt() {
		System.out.println("切入前的代码");
	}
	
	// 切面方法, 在对应的切面方法上添加注解
	//     配置切入点
	@Around(value="execution(* com.useage.day06.*.*(..))")
	public void time(ProceedingJoinPoint p) throws Throwable {
		
		long start = new Date().getTime();
		
		p.proceed();

		long end = new Date().getTime();
		// System.out.println("调用后");
		
		Signature str = p.getSignature();
		
		System.out.println(str + ": 执行时间(毫秒)：" + (end-start));
	}
	
}
